機器學習(machine learning)算是這 10 年來相當熱門的研究主題,由於研究的成果可以立即的應用到各種範式辨識(pattern recognition,內地譯為:模式識別)的技術上,諸如語音辨識、動作辨識、人臉辨識....等等,因此這些年在理論與實務上都有相當的進展。
有某個數學家說:機器學習其實就是統計學的新包裝。這話大約對了一大半,因為大多數機器學習的核心理論都是建立在機率理論之上;也有人認為「機器學習不屬於電腦科學」,畢竟傳統的計算機科學理論絕大多數是建立在「離散數學」上,而機率理論確有其「連續性」的淵源,兩者的思維相差頗大,也難怪有不少資深的電腦科學家對於機器學習這個派別的崛起感覺不以為然。
這個領域的研究,目前主要聚焦在機器究竟「怎麼學」,但是在深究各種方法細節之前,讓我們先來談談「機器學習」到底是要「學些什麼」。
如果去修一門大學裡的「機器學習」課程,目前大致上會著重在處理兩大類的問題:「分類」(classification)與「分群」(clustering)。前者是讓機器將一個目標物指派到幾種事先定義好的類別其中之一,比方說給機器一顆豆子,機器需告訴你它是紅豆、綠豆、還是黃豆;又比方說給機器一個指紋,機器必須判斷這個指紋「是」或「不是」某個人。而分群則是讓機器把一群屬性各異的目標物,依需要區分成數個不同的類別,比方說給機器一把豆子,機器必須將之分成三群,當然,這三群不必然是紅豆、綠豆」跟黃豆,也有可能是大豆、中豆、跟小豆,這要視使用者定義的分群標準而定。
從前面的例子來看,在訓練機器學「分類」的時候,人必須要明確的告訴機器某個類別具有哪些屬性,這種「屬性」跟「類別」(也就是標準答案)都有的資料,使得這類的機器學習也稱為「監督式學習」(supervised learning);相對的,「分群」的工作依照的是「屬性」的異同,並不包含明確的「類別」名稱,因此也稱作「非監督式學習」(unsupervised learning)。
無論分類或分群,機器「學習」的效果究竟好不好,其實都很容易評量:只要拿已經有標準答案的屬性資料來測試即可。
以分類來說,一個指紋辨識系統可以發生的狀況有四種:(1)輸入的指紋是正確的,機器也判斷這個指紋是正確的;(2)輸入的指紋是錯的,機器卻說是對的;(3)輸入了對的指紋,機器卻說不對;(4)輸入不正確的指紋,機器也說它是不對的。其中(1)(4)都表示機器學對了,而(2)(3)則是不同類型的錯誤。依據系統的需求不同,有的會要求(2)絕對要低(比方說絕對機密的檔案室),有的卻會強調(3)不能高(比方說筆記型電腦的指紋鎖)。當然,如果能兩個都低,當然表示這個機器學習的演算法是更加優良的。
至於分群,則可以計算機器誤把紅豆當綠豆跟把綠豆當紅豆的的次數,當成錯誤率。由於分群的工作是「把豆子分成兩種」,因此兩種錯誤在這裡是視為同等的,而不像分類那麼複雜。
由於「機器學習」的主要目標非常明確,因此很多機構每年都會辦理大型的國際比賽,看看全世界誰的演算法最厲害(也就是錯誤率最低的意思)。今年台灣大學資訊工程系的團隊,就在 KDDCup 的比賽裡勇奪世界冠軍,是相當傑出的表現。不過無論從理論或實務的觀點來看,目前都很難有某種特定的演算法可以適用於所有的情況:判斷一個 X光片是否包含腫瘤,跟判斷一斷錄音是不是某個人的聲音,除了資料處理步驟不同之外,演算法所需要的特性可能也相當不同。
以上說的是以機器學習的「目的」來區分,而達成目的的方法,也就是「怎麼學」,則更是琳琅滿目,每年更是不斷的有新方法被提出。礙於篇幅,小弟在此就不詳加敘述,真的有興趣的話,就先看看維基百科的「機器學習」(machine learning),或找本入門書來看看,或是找門課去旁聽吧。
--------
註:少數讀者反應,「怎麼學」就此含糊帶過實在太不負責任,請容小弟之後在其他篇幅裡再針對幾個常見的方法稍加介紹....明明就沒幾個讀者,還要求這麼多....
沒有留言:
張貼留言